import os

import allure
import pytest

from api.user_api import login
from core.ApiService import ApiService
from utils.YamlUtil import YamlUtil
from utils.read import base_data
import json

"""
function: 默认范围,fixture在测试结束时被销毁
class: fixture在类中的最后一个测试执行结束后销毁
module: fixture在模块中的最后一个测试执行结束后销毁
package: fixture在包中的最后一个测试执行结束后销毁
session: fixture在整个测试周期执行结束后销毁

"""


def get_data():
    return base_data.read_data()


# # 第一种方法
# @pytest.fixture()
# def login_fixture():
#     if 'token' not in os.environ:  # 判断是否环境变量中有token 如果没有token执行下面步骤
#         data = get_data()['login_fixture']
#         mobile = data['mobile']
#         password = data['password']
#         # 登录接口
#         result = login(mobile, password)
#         os.environ['token'] = result.body['token']
#         os.environ['mobile'] = str(mobile)
#         return result.body['token'], mobile
#     else:  # 如果有token 直接返回token
#         return os.environ['token'], os.environ['mobile']


# 第二种方法
"""
登录成功的用例单独写到oonftest中，以方便后续其他用例使用返回的token
"""


@pytest.fixture(scope="session")  # 为使不重复调用方法，scope可以写成session 在整个测试周期执行结束后销毁
def login_token():
    data = get_data()['login_data']
    userAccount = data['userName']
    pwd = data['password']
    ValidateCode = data['ValidateCode']
    # 调用user_api中的login方法，只登录成功的账号密码
    result = login(userAccount, pwd, ValidateCode)
    # 获取登录接口返回的ste_cookie
    Set_Cookie = result.headers['Set-Cookie']
    print(Set_Cookie)
    # 拼接cookies
    headers = {
        "Cookie": "SECKEY_ABVK=wJa6f68BTeSnE9U9WTtzAMicStYbrXi1LXN47ov3T3w%3D; "
                  "BMAP_SECKEY"
                  "=1_EJ4PKZhUOP5fEKDQrblvz1BbMcCG0zMP5I9uU2_spSYyFUU9wTTvoNqy4BYmOSfZb5S1yCP02k4Q1O8wzeH5No6OuDZoaBpBM6zgHGKsXunbQQuetQG7ZUigdVQ1RyWl7mRuERwmlXldDz4kB_qcBiznKssw2AiNCc6j0lEQtAMLEwLepw3ZlOqxH3HCYS;" + " " + Set_Cookie}

    return headers
